From: Carlos Garnacho Date: Mon, 28 Jun 2021 12:19:15 +0000 (+0200) Subject: magnifier: Add method to enable/disable crosshairs X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~574^2^2~247 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=3df4b5ec7ca40f9e57d4b3316bca8f6b42f7a964;p=gnome-shell.git magnifier: Add method to enable/disable crosshairs These do some some signals connection and monitor layout tracking that we forget to disconnect when the magnifier is disconnected. This causes warnings if enabling the magnifier, disabling it, switching to another tty, and back. (Presumably also happens for monitor hotplugs). This signal should just stay connected as long as it's needed, so add a setEnabled() method on the CrossHairs actor that we can hook on the magnifier. Part-of: --- diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js index 22c11766b..c8f695e2b 100644 --- a/js/ui/magnifier.js +++ b/js/ui/magnifier.js @@ -172,6 +172,9 @@ var Magnifier = class Magnifier { this.stopTrackingMouse(); } + if (this._crossHairs) + this._crossHairs.setEnabled(activate); + // Make sure system mouse pointer is shown when all zoom regions are // invisible. if (!activate) @@ -1677,9 +1680,7 @@ class Crosshairs extends Clutter.Actor { this._clipSize = [0, 0]; this._clones = []; this.reCenter(); - - Main.layoutManager.connect('monitors-changed', - this._monitorsChanged.bind(this)); + this._monitorsChangedId = 0; } _monitorsChanged() { @@ -1687,6 +1688,16 @@ class Crosshairs extends Clutter.Actor { this.reCenter(); } + setEnabled(enabled) { + if (enabled && this._monitorsChangedId === 0) { + this._monitorsChangedId = Main.layoutManager.connect( + 'monitors-changed', this._monitorsChanged.bind(this)); + } else if (!enabled && this._monitorsChangedId !== 0) { + Main.layoutManager.disconnect(this._monitorsChangedId); + this._monitorsChangedId = 0; + } + } + /** * addToZoomRegion * Either add the crosshairs actor to the given ZoomRegion, or, if it is